package com.epam.tcs.dao.factory;

import com.epam.tcs.dao.hibernate.impl.GroupDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.JournalLectureStatusDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.JournalPracticeStatusDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.LectureDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.LectureStatusDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.PracticeDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.PracticeStatusDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.ProgramDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.StudentDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.impl.ThemeDAOHibernateImpl;
import com.epam.tcs.dao.hibernate.entities.Group;
import com.epam.tcs.dao.hibernate.entities.JournalLectureStatus;
import com.epam.tcs.dao.hibernate.entities.JournalPracticeStatus;
import com.epam.tcs.dao.hibernate.entities.Lecture;
import com.epam.tcs.dao.hibernate.entities.LectureStatus;
import com.epam.tcs.dao.hibernate.entities.Practice;
import com.epam.tcs.dao.hibernate.entities.PracticeStatus;
import com.epam.tcs.dao.hibernate.entities.Program;
import com.epam.tcs.dao.hibernate.entities.Student;
import com.epam.tcs.dao.hibernate.entities.Theme;

public class HibernateDAOFactory extends DAOFactory {

	@Override
	public DAO<Student> getStudentDAO() {
		return new StudentDAOHibernateImpl(Student.class);
	}

	@Override
	public DAO<Group> getGroupDAO() {
		return new GroupDAOHibernateImpl(Group.class);
	}

	@Override
	public DAO<Program> getProgramDAO() {
		return new ProgramDAOHibernateImpl(Program.class);
	}

	@Override
	public DAO<Theme> getThemeDAO() {
		return new ThemeDAOHibernateImpl(Theme.class);
	}

	@Override
	public DAO<Lecture> getLectureDAO() {
		return new LectureDAOHibernateImpl(Lecture.class);
	}

	@Override
	public DAO<Practice> getPracticeDAO() {
		return new PracticeDAOHibernateImpl(Practice.class);
	}

	@Override
	public DAO<JournalLectureStatus> getJournalLectureStatusDAO() {
		return new JournalLectureStatusDAOHibernateImpl(JournalLectureStatus.class);
	}

	@Override
	public DAO<JournalPracticeStatus> getJournalPracticeStatusDAO() {
		return new JournalPracticeStatusDAOHibernateImpl(JournalPracticeStatus.class);
	}

	@Override
	public DAO<LectureStatus> getLectureStatusDAO() {
		return new LectureStatusDAOHibernateImpl(LectureStatus.class);
	}

	@Override
	public DAO<PracticeStatus> getPracticeStatusDAO() {
		return new PracticeStatusDAOHibernateImpl(PracticeStatus.class);
	}

}
